package com.hbnu.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hbnu.system.model.dto.CheckBackDTO;
import com.hbnu.system.model.dto.OpusAddDTO;
import com.hbnu.system.model.dto.SearchPageDTO;
import com.hbnu.system.model.dto.UserDTO;
import com.hbnu.system.model.entity.Opus;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
public interface IOpusService extends IService<Opus> {
    /**
     * 新增作品
     *
     * @param opus
     * @return 是否成功
     */
    boolean addOpus(Opus opus);

    /**
     * 新增作品
     *
     * @param opusAddDTO
     * @return 是否成功
     */
    boolean addOpus(OpusAddDTO opusAddDTO);


    /**
     * 删除作品
     *
     */
    boolean deleteOpus(String opusID);

    /**
     * 修改作品
     *
     * @param opus
     * @return 是否成功
     */
    boolean updateOpus(Opus opus);

    /**
     * 作品VO分页查看
     */

    /**
     * 根据作品主键查询作品
     *
     * @param opusID
     * @return Opus
     */
    Opus getOpus(String opusID);

    /**
     * 作品名称查重
     *
     * @param achievementName
     * @return 是否重复
     */
    boolean checkOpusName(String achievementName);


    /**
     * 分页查询
     */
    IPage<Opus> pageCondition(SearchPageDTO searchPageDTO);

//    /**=============================== ========================================
//     * 通过id获得identfyvo
//     */
//    PaperVO getIdentifyVO(String id);

//    /**
//     * 院级审核通过
//     */
//    Boolean collegeCheckPass(String PID);
//
//    /**
//     * 院级审核打回
//     */
//    Boolean collegeCheckBack(CheckBackDTO checkBackDTO);

    /**
     * 校级审核通过
     */
    Boolean schoolCheckPass(String token,String opusID);

    /**
     * 校级审核打回
     */
    Boolean schoolCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 作品提交
     */
    Boolean CommitOpus(String opusID);

    /**
     * 普通用户分页查看与自己相关的作品
     */
    IPage<Opus> userGetRelateOpus(UserDTO userDTO);

//    /***
//     * 提供合计数据
//     *
//     */
//    float[] getFigure(UserDTO userDTO);

//    /**
//     * 院级管理员查看需要自己审核的鉴定
//     */
//    IPage<Identify> collegeUserGetIdentify(UserDTO userDTO);

    /**
     * 校级管理员查看需要自己审核的作品
     */
    IPage<Opus> schoolUserGetOpus(UserDTO userDTO);

}
